/**
 * @type {!traqk.core.data.Manager|undefined}
 * @static
 * @private
 */
traqk.core.data.managerImpl_;

/**
 * @static
 * @returns {!traqk.core.data.Manager|undefined} The manager instance.
 */
traqk.core.data.getManager = function(impl) {
	return traqk.core.data.managerImpl_;
};

/**
 * @static
 * @param {!traqk.core.data.Manager} impl
 */
traqk.core.data.setManagerImpl = function(impl) {
	if (!traqk.core.data.managerImpl_) {
		traqk.core.data.managerImpl_ = impl;
	} else {
		throw Error('manager implementation already set');
	}
};


// Manager interface definition

/**
 * Interface defining data operations that can be done.
 * @interface
 * @constructor
 */
traqk.core.data.Manager = goog.abstractMethod;

traqk.core.data.Manager.prototype.addEntityType = goog.abstractMethod;

traqk.core.data.Manager.prototype.addEntity = goog.abstractMethod;
